#ifndef FRAMEDELADMINISTRADOR_H_
#define FRAMEDELADMINISTRADOR_H_


#include <iostream>
#include <gtkmm.h>
#include "FrameSeleccion.h"
#include "FrameEleccionTabla.h"
#include "FrameDeEleccionDeFiltros.h"
#include "FrameConsultasCreadas.h"
#include <vector>
#include <map>

class GestorArchivoConfiguracion;

class FrameDelAdministrador:public Gtk::Frame {
private:
	std::vector<std::string> valores;
	std::map<std::string, Frame*> mapa;

	/**** PARA LA PRIMERA ENTREGA, NO HAY MANEJJOS DE MUCHAS TABLAS */
	/****/
	/****/
	std::string datosDeTabla;	// <numero> <nombre>
	int numeroConsultas;

	// filtros e inputs de todas las consultasd de una tabla
	std::map<int, std::map<char, vector<std::string> > > filtros;
	std::map<int, std::map<char, vector<std::string> > > inputs;
	std::map<int, std::string > graficos;	// numeroconsulta |	<nombregrafico>	, dimension y hechos (son opcionales)
	/****/
	/****/

	void cargarVector();

protected:
	Gtk::VBox cajaVertical;
	Gtk::HBox cajaHorizontal;
	Gtk::Frame framePrueba;
	FrameSeleccion frameSeleccion;
	FrameEleccionTabla frameTablaYGrafico;
	FrameDeEleccionDeFiltros frameFiltrosInputs;
	FrameConsultasCreadas frameResultadoConsultas;

	Gtk::Button agregar;
	Gtk::Button nuevo;
	Gtk::Button guardar;
	Gtk::Button borrar;
	Gtk::Button mostrar;
	Gtk::HButtonBox cajaBotones;


	void on_selection_changed();
	void on_clicked_boton_ver();
	void on_clicked_agregar();

public:
	FrameDelAdministrador(GestorArchivoConfiguracion& gestor);
	virtual ~FrameDelAdministrador();

private:
	void conectarManejadoresEventos();
	void inicializarBotones();
	bool hayElegido(std::map<char, vector<std::string> >& mapa, char tipo);

};



#endif
